/*
 * Copyright (c) Jack魏 2024 - 2024, All Rights Reserved.
 */

const POST = 'POST'
const GET = 'GET'

/**
 * ajax 请求封装
 *
 * @param type 类型
 * @param params 参数
 * @param url 请求链接
 * @param config 配置
 * @param header 请求头
 * @constructor
 */
function MyAjax(type, params, url, config, header) {
  console.log("请求类型:", type, "\n请求URL: ", url, "\n请求参数:", params)
  console.log("请求配置:", config)
  console.log("请求头:", header)
  if (type === POST) {
    params = JSON.stringify(params);
  }

  let result = {};
  $.ajax({
    type: type, // 请求类型
    async: config ? config.async : true, // 默认true,异步
    data: params, // 请求参数
    dataType: config ? config.dataType : 'json', // 数据类型
    url: url, // 请求URL
    contentType: header ? header.contentType : 'application/json;charset=utf-8', // 发送的数据类型
    success: function (data) {
      console.log(data)
      // 默认弹出请求结果，否则config.msg=false
      let isMsg = config ? config.msg === undefined ? true : config.msg : true;
      if (isMsg) {
        if (isOk(data)) {
          layer.msg(data.data, {icon: 6});
        } else {
          layer.msg(data.message, {icon: 5});
        }
      }
      result = data;
    }, error: function (XMLHttpRequest, textStatus, errorThrown) {
      layer.msg('服务器内部错误！', {icon: 2});
    }
  });
  // 判断是否返回数据
  if (config && config.result) {
    return result;
  }
}

/**
 * 判断请求是否正常
 *
 * @param data 返回的数据
 * @returns {boolean} 是否正常
 */
function isOk(data) {
  return data && data.code === 200
}